1. Field of the Invention
The invention relates to storage devices of subsystems within a storage virtualization environment. More particularly, the invention relates to firmware upgrades of storage systems within a storage virtualization environment.
2. Description of the Related Art
Storage virtualization environments typically involve logical space (e.g., a storage subsystem) within a physical (disk) storage system. In a typical storage virtualization environment, there are multiple virtual machines (VMs) providing separate but dependent storage functions within a disk array controller or storage controller, such as a RAID (redundant array of inexpensive disks) controller. A hypervisor or other suitable device or process configures the virtual machines in the storage virtualization environment.
A disk array subsystem that hosts a storage virtualization environment (in the form of virtual machines running on the platform) allows the integration of multiple storage applications within the subsystem to form a unified storage subsystem. One such example of a unified storage subsystem is a product that supports both file level and block level input/output (I/O) operations to the subsystem. In such a subsystem, it is important to have a system firmware upgrade mechanism that upgrades the firmware or software for all storage applications running within the virtualization environment as an atomic operation, while also keeping the subsystem online and accessible to external hosts or initiators when the upgrade is being performed for the entire subsystem. That is, the upgrades should appear instantaneous to the rest of the system, and either be completely implemented if successful or not implemented at all if unsuccessful. If the unified system, which includes all of the virtual machines, is not upgraded atomically, there is a chance that different virtual machines will run different versions of the system firmware at a particular point in time (e.g., during upgrades), thus resulting in firmware version co-validation issues across different versions. The subsystem also should be capable of a rollback operation to the previous running version of the firmware in case the upgrade fails, thereby requiring the older version of the firmware to be preserved until the upgrade is completed and committed. Also, the system (or disk array controller) typically is provided with an attached storage device (e.g., in the form of a flash disk) whose storage capacity is limited. Therefore, such functional requirements and storage space limitations necessitate efficient if not optimal handling of the relatively limited storage space available on the storage device for storing the code image of the system firmware.
Conventional methods and mechanisms exist for upgrading firmware, in phases, and restoring firmware in-situ to compensate for failed firmware upgrades, e.g., in a non-volatile memory. In such methods and mechanisms, firmware can be upgraded and restored as the non-volatile memory remains functioning. For example, such methods and mechanisms involve designating a first copy of firmware for accessing and designating a second copy of the firmware for upgrading, which allows access to one or more firmware instructions from the first copy while upgrading the second copy with new firmware.